前篇介紹完用 Emacs 寫 Ruby 程式的設定篇,我們這一篇實際來看一下這些功能的使用
Ruby 是一個物件導向語言,建立類別是很重要的工作,我們啟動 Emacs 按 Ctrl-x Ctrl-f
先來建立一個類別 greet.rb,首先看一下環境設定
先看程式補全的 Company backends 的設定,按 Ctrl-h v company-backends
沒錯,有三個群組,第一個群組使用 company-robe
再來看一下語法檢查 flychekc 的設定,按 Ctrl-c ! v
Ruby-mode 的 flycheck 支援 chef-foodcritic, rubocop, reek, rubylint 等等後端,我們介紹使用的rubocop 已經看到執行檔跟設定檔都已經設定,可以使用
我們開始打入 cla
會啟動 company 的補全
看一下補全的來源,按 Meta-x company-diag
,原來來自於 yasnippet
看一下 yasnipeet 的預設 snippets,按 Meta-x yas-describe-table
,預設很多的 ruby 程式片段,當然包含了類別的定義
用 def
來展開類別函式
ruby-mode 會顯示函式或類別,區塊的區間
如果語法有錯誤,flycheck 會以粉紅色顯示錯誤,並在狀態列下顯示 FlyC: 1/0 ,前面的數字是錯誤,後面的數字是警告
看詳細的問題,按 Ctrl-c ! l
, 是 end 的問題
繼續打完簡單的類別定義,我們故意留下一些多餘的行
開啟一個 test.rb,打入 requ
,奇怪,為什麼沒有補全?檢查一下 company-backends
用 company-robe,但 robe 好像沒作用
需要啟動 Meta-x robe-start
需要先啟動 ruby console 打 yes
不行,no matching directory found
這是因為它試著啟動 inf-ruby-console-auto
這 inf-ruby-console-auto 是為 ruby 的一些專案使用的,官網上的文件
因為我們不在專案內,所以無法自動啟動,我們手工啟動 Ctrl-c Ctrl-s
inf-ruby
再來啟動 robe-start
可以啟動了,回到 test.rb, 打入 req
,補全出現了
我們將 greet.rb 的類別匯入,來實現一個物件,打入 Gre
,沒有出現補全?因為沒有將 greet.rb 載入 inf-ruby ,按 Ctrl-c Ctrl-l
來載入
這時就會讓 test.rb 看到 greet.rb 的函式
同時 Eldoc 也會在小緩衝區顯示類別的函式定義
Meta-.
就可以跳到函式的定義,Meta-,
跳回
可以將程式用 Ctrl-space
劃起來,按 Ctrl-c Ctrl-r
到 inf-ruby 執行
相關簡報:簡報
相關程式:Github,請下載到 ~/.emacs.d 啟動 Emacs 會自動安裝個套件
相關資訊:我的部落格